package com.lancoo.ccas53.arrangecourse.dataprocess;

import com.lancoo.ccas53.pojo.dto.ArrangeTeachingClassDto;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @Description 环节处理类
 * @Author Fortysun
 * @Date 2023-03-27 14:16
 */
@Slf4j
public class LinkProcess {


    /**
     * 从获取的教学班数据中，过滤掉环节数据
     * 并且将环节对应的周次信息，从课程中排除；
     * @param teachingClassList
     * @return 返回环节信息列表
     */
    public List<ArrangeTeachingClassDto> getResult(List<ArrangeTeachingClassDto> teachingClassList) {
        if (teachingClassList == null || teachingClassList.isEmpty()) {
            log.error("LinkProcess--getResult: 教学班数据获取失败了~！！");
            return null;
        }

        //初始化用来存储环节信息
        List<ArrangeTeachingClassDto> linkList = new ArrayList<>();

        Iterator iterator = teachingClassList.iterator();
        //从教学班列表中，将环节列表信息从里面拆出来
        while (iterator.hasNext()) {
            ArrangeTeachingClassDto teachingClass = (ArrangeTeachingClassDto) iterator.next();
            //如果时环节，那么加入环节列表，并从教学班列表信息中移除；
            if (teachingClass.getFlag().equals(2)) {
                //将环节加入环节列表
                linkList.add(teachingClass);
                //将环节信息从原来的列表中移除
                iterator.remove();
            }
        }

//        //处理课程的周次信息
//        for (ArrangeTeachingClassDto link : linkList) {
//            for (ArrangeTeachingClassDto teachingClass : teachingClassList) {
//                //如果环节的周次，不全为1，即环节，仅仅安排学期部分周次要上
//                if (link.getWeek() != null && link.getWeek().indexOf("0") != -1) {
//                    //如果开课单位、专业和年级都相同
//                    if (link.getCollegeId() == teachingClass.getCollegeId()
//                            && link.getMajorId() == teachingClass.getMajorId()
//                            && link.getGradeId() == teachingClass.getGradeId()) {
//                        //将两个二进制字符串，进行异或运算，比如10101和11111
//                        //结果就是01010，这个值，就是剩下的可排课的周次
//                        String calcWeekStr = BinaryUtil.binaryXOR(link.getWeek(), teachingClass.getWeek());
//                        teachingClass.setWeek(calcWeekStr);
//                        continue;
//                    }
//                }
//            }
//        }
//
//        //将处理好的教学班列表信息进行返回
//        return teachingClassList;
        //将环节信息进行返回
        return linkList;
    }
}
